<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>15_Promise-Promise类方法any方法</title>
  </head>
  <body>
    <script>
      // 创建三个 Promise 实例
      const p1 = new Promise((resolve, reject) => {
        setTimeout(() => {
          // resolve('resolve p1')
          reject("reject p1");
        }, 1000);
      });

      const p2 = new Promise((resolve, reject) => {
        setTimeout(() => {
          // resolve('resolve p2')
          reject("reject p2");
        }, 2000);
      });

      const p3 = new Promise((resolve, reject) => {
        setTimeout(() => {
          resolve("resolve p3");
          // reject('reject p3')
        }, 3000);
      });

      // 使用 Promise.any 类方法
      // Promise.any 方法接收一个 Promise 实例的数组作为参数，只要数组中有一个 Promise 实例变为 fulfilled 状态，Promise.any 就会返回一个 fulfilled 状态的 Promise 实例，其值为第一个变为 fulfilled 状态的 Promise 实例的值。
      // 如果数组中的所有 Promise 实例都变为 rejected 状态，Promise.any 就会返回一个 rejected 状态的 Promise 实例，其值为一个 AggregateError 实例，包含了所有 rejected 状态的 Promise 实例的 reason。
      Promise.any([p1, p2, p3])
        .then((value) => {
          console.log("then", value);
        })
        .catch((reason) => {
          console.log("catch", reason);
        });
    </script>
  </body>
</html>
